package org.ziwei.paipan.biao;

import org.ziwei.paipan.var.DiZhi;

/**
 * 天府星系表
 * 天府星的宫位根据紫微星的宫位斜飞作对
 * 比如某人紫微星在卯宫，斜飞对宫为丑，安天府星
 * 只有寅申二宫，紫微天府同宫
 * 
 * 天府星是南斗星曜的主星
 * 跟着天府星在命盘上选择的星曜一共八个：天府星，太阴星，贪狼星，巨门星，天相星，天梁星，七杀星，破军星
 * 在命盘中顺时排列，口诀：
 * 天府顺行有太阴，贪狼而后巨门临
 * 随来天相天梁继，七杀空三是破军
 */
public class TianFuXingBiao {
	/**
	 * 天府表
	 * 天府星位于紫微星的对称位置
	 */
	private static DiZhi[] tianFuXingBiao = {DiZhi.CHEN, DiZhi.MAO, DiZhi.YIN, DiZhi.CHOU, DiZhi.ZI, DiZhi.HAI, DiZhi.XU, DiZhi.YOU, DiZhi.SHEN, DiZhi.WEI, DiZhi.WU, DiZhi.SI};
	
	/**
	 * 根据紫微星所在宫支，返回天府星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anTianFuXing(DiZhi diZhi){
		return tianFuXingBiao[diZhi.ordinal()];
	}

	/**
	 * 根据天府星所在宫支，返回太阴星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anTaiYinXing(DiZhi diZhi){
		return DiZhi.values()[(diZhi.ordinal()+1)%12];
	}
	
	/**
	 * 根据天府星所在宫支，返回贪狼星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anTanLangXing(DiZhi diZhi){
		return DiZhi.values()[(diZhi.ordinal()+2)%12];
	}
	
	/**
	 * 根据天府星所在宫支，返回巨门星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anJuMenXing(DiZhi diZhi){
		return DiZhi.values()[(diZhi.ordinal()+3)%12];
	}
	
	/**
	 * 根据天府星所在宫支，返回天相星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anTianXiangXing(DiZhi diZhi){
		return DiZhi.values()[(diZhi.ordinal()+4)%12];
	}
	
	/**
	 * 根据天府星所在宫支，返回天梁星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anTianLiangXing(DiZhi diZhi){
		return DiZhi.values()[(diZhi.ordinal()+5)%12];
	}
	
	/**
	 * 根据天府星所在宫支，返回七杀星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anQiShaXing(DiZhi diZhi){
		return DiZhi.values()[(diZhi.ordinal()+6)%12];
	}
	
	/**
	 * 根据天府星所在宫支，返回破军星所在宫支
	 * @param diZhi 宫支
	 * @return DiZhi
	 */
	public static DiZhi anPoJunXing(DiZhi diZhi){
		return DiZhi.values()[(12 + diZhi.ordinal() - 2)%12];
	}
}
